package com.neusoft.ch3;

/*
 * 课堂笔记：
 * 1、程序执行的流程
 *   程序中有三种流程
 *      顺序流程、分支流程、循环流程
 *   程序流程有两个维度的度量：时间复杂度、空间复杂度（了解）
 * 2、分支流程
 *    if语句和switch语句
 *    if语句具有互斥性（单选性）；
 *    switch-case语句具有多选性；
 *    
 *    if语句：
 *    单分值、双分支、多分支
 *    语法：
 *       单分支：
 *       if(条件判定表达式){
 *       	if语句体;
 *       }
 *       
 *       双分支：
 *       if(条件判定表达式){
 *       	if语句体;
 *       }else{
 *          else语句体；
 *       }
 *       
 *       多分支：
 *       if(条件判定表达式1){
 *       	if语句体1;
 *       }else if(条件判定表达式2){
 *       	if语句体2;
 *       }else if(条件判定表达式N){
 *       	if语句体N;
 *       }else{
 *          else语句体；
 *       }    
 *       注意：
 *          条件判定表达式的结果必须是boolean类型；
 *          单分支if语句，当if括号中条件成立时执行if语句体，不成立则不执行；
 *          if条件后面如果没有{}，则紧随其后的一条语句作为if语句体；
 *          编程规范要求必须使用{}表示if语句体；
 *          双分支if语句，是当条件成立时执行if语句体，不成立时执行else语句体；
 *          双分支和多分支中的各个if语句具有互斥性，至多只能执行其中的一条语句，也就是
 *          如果执行了其中的一条if语句，则会结束整个if语句，不会再进入其他语句执行；
 *     
 *     switch-case语句：
 *        多分支多选择；
 *        语法：
 *            switch(表达式){
 *               case 值1:
 *                  case语句体;
 *                  break;
 *               case 值2:
 *                  case语句体;
 *                  break;  
 *               case 值N:
 *                  case语句体;
 *                  break; 
 *               default:
 *                  default语句体；
 *                  break;      
 *            }
 *            
 *         执行流程：表达式的值和case后面的值做等值匹配，如果匹配成果，则进入对应的case语句体进行执行；
 *                 如果该语句体中有break语句，则执行完break语句之后结束switch语句；
 *                 如果该语句体中没有break语句，值继续执行后续的case语句，知道遇到break语句
 *                 或者执行完整个switch语句；   
 *         解析：
 *            一个case就是switch语句的一个分支；
 *            break语句可以省略；（省略与不省略是由差别的）
 *            括号中的表达式的值和case后面的值是做等值匹配。
 *            表达式的结果类型可以是byte、short、int、char、String(jdk1.7+?)
 *            default语句类似else语句；当所有的case值都无法匹配时，执行default语句；
 *            default语句可以省略；
 *            default语句一般习惯放在最后，但是也可以放在其他地方；
 *     
 */
public class TestCh3 {

	public static void main(String[] args) {
		// 子方法需要在mian方法中调用才会被执行
		// 调用子方法
		//test01();
		//test011();
		//test02();
		test021();
	}
	/**
	 * 练习：使用switch语句实现分数等级输出
	 */
	private static void test021() {
		// 分数
		int iScore = 100;
		// switch语句
		switch (iScore / 10) {
		case 10:
			// System.out.println("优秀");
			// break;
		case 9:
			System.out.println("优秀");
			break;
		case 8:
			System.out.println("良好");
			break;
		case 7:
			System.out.println("中等");
			break;
		case 6:
			System.out.println("及格");
			break;
		default:
			System.out.println("不及格");		
		}
	}
	
	
	/**
	 * 示例：switch-case语句
	 */
	private static void test02() {
		// 自行添加break语句之后，观察运行结果
		// 成绩变量
		int iVal1 = 19;
		// switch语句
		switch (iVal1) {
		case 16:
			System.out.println("当前值是16");
			// break;
		case 17:
			System.out.println("当前值是17");
			// break;
		default:
			System.out.println("当前值是。。。");
			// break;
		case 18:
			System.out.println("当前值是18");
			// break;
		}
	}
	
	/**
	 * 练习：比较两个变量值的大小
	 */
	private static void test011() {
		// 定义两个变量
		int iVal1 = 4;
		int iVal2 = 3;
		// 记录最大值
		int max = iVal1>=iVal2?iVal1:iVal2;
		// 输出较大的数
		/*if (iVal1 >= iVal2) {
			max = iVal1;
		} else {
			max = iVal2;
		}*/
		// 打印信息
		System.out.println("较大的数为：" + max);
	}
	/**
	 * 子方法：if语句示例 
	 */
	private static void test01() {
		System.out.println("if语句示例");
		// 年龄变量
		int iAge = 17;
		// 单分支
		if (iAge >= 18) {
			System.out.println("成年人");
		}
		// 双分支
		if (iAge >= 18) {
			System.out.println("成年人");
		} else {
			System.out.println("未成年人");
		}
		// 多分支
		// 课堂练习：根据成绩分数（百分制），换分成绩等级为优秀、良好、中等、及格、不及格；
		// 使用嵌套的if语句实现
		// 成绩变量
		int iScore = 85;
		if (iScore >= 90) {
			System.out.println("优秀");
		} else if (iScore >= 80) {
			System.out.println("良好");
		} else if (iScore >= 70) {
			System.out.println("中等");
		} else if (iScore >= 60) {
			System.out.println("及格");
		} else {
			System.out.println("不及格");
		}
	}

}
